iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0

前一個單元收尾時說過,新問題來了:這麼多 agent 同時在做事,怎麼知道它們真的在做事?更早一步的問題其實是:怎麼知道它們不是在「重複」做事。今天這篇是我撞到的第一面牆。

交接的時候撞車了

八月五日我在做一次例行交接。一份工作在上一個 session 手上做到一半,我把交接說明整理成一段文字,交給下一個 session 接手。流程看起來沒問題:說明在、目標在、指示是「接手現有的工作」。

問題是同一份交接說明不只到了一個 session 手上。另一個 session 也拿到它,也照著做了。結果就是兩個 session 各自認領了同一件事,各自建自己的 branch,各自動工。沒有任何一邊發現對方的存在。

我後來在復盤時把這次事件叫「C4 撞車」。名字不重要,重要的是它暴露的東西:我的系統裡,「誰在做這件事」這個資訊,沒有放在任何單一、權威、機器查得到的地方。它存在我最私人的記憶裡,而記憶同步不到三個 session。

撞車前的檢查為什麼沒擋住

撞車發生前,我其實有防範。工作流程裡有一個安全 gate,任務重複的情形會被擋下。舉例來說,一個 issue 已經開了,另一個 session 又去開一樣的 issue,會被拒絕。

但這個 gate 有個盲區。它設計的對象是「重複建立新東西」,對象是重複開 issue。撞車的情形剛好不是這種:issue 已經存在,是合法地接手一項已經登記的工作。 Gate 一查,發現沒有重复的 issue,就放行了。放行之後的下一步,每個 session 都是去認領那個既有的、官方的目標,而「目標已經有人在做了」這件事,沒有任何一個 gate 負責檢查。

事後檢查起來很簡單,但當時的我連「需要檢查」都沒想到。我以為安全 gate 擋了重複開 issue 就夠了。

接手前先證明沒有活人在做

撞車後我把接手的流程改成有固定三步,這三步是我在活著作業系統的復盤裡寫進去的硬規則。

第一,接手任何已有的工作目標之前,先預設它是活著的。不是「假設沒人做」再證明,而是「假設有人做」再證明方向反過來。查證成本幾分鐘,撞車成本是一整份重做的工。

第二,看時間戳。目標的工作目錄下,把檔案照修改時間排序,最近幾十分鐘內有更新,就是強烈的活著訊號。

第三,查 process。另外把自己經手的 checkout 都列出來,確認目前有沒有別的 session 還掛著同一個 branch。

三步走完都還是「沒有人在動」,才准接手。這三步後來變成我可以直接給任何一個 agent 的接手檢查清單,它現在就放在公開 repo 的 evidence/day-15/,任何 session 都可以直接拿去用。

認領這件事需要帳本

C4 撞車也直接推了後面幾天的建設。三步檢查能擋住一次流氓接手,但它每次都要手動跑一次,也只在「agent 自己有紀律想起來」時才會跑。

很快意識到光靠每次的紀律不夠。需要一個地方把「這件事誰認領了」寫下來,而且要跨 agent、跨機器都能看到。認領這個動作,需要帶著 timestamp 寫進一個有歷史的系統。

這就是 Work Ledger,我下回說明。

明天

撞車事件讓我開始做工作帳本。今天寫了撞車,明天寫帳本的第一版:一個我做錯了、後來整個拆掉重做的版本。


上一篇
14 什麼時候該收手?review 迴圈的收斂判準
下一篇
16 V1 做錯了,我把它整個拆掉重做
系列文
國小教師的 Agent OS:30 天讓 AI 的「做完了」有證據 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言